const express = require('express');
const router = express.Router();
const moment = require('moment');
const AccountModel = require('../../models/AccountModel');
// 导入中间件
const checkTokenMiddleware = require('../../middlewares/checkTokenMiddleware')

// 记账本列表
router.get('/account', checkTokenMiddleware, function(req, res) {
  console.log(req.user)
  // 读取集合数据
  AccountModel.find().sort({time: -1}).then(data => {
    // res.render('list', {accounts: data, moment})
    res.json({
      // 响应编号
      code: '0000',
      // 响应信息
      msg: '读取成功',
      // 响应数据
      data
    })
  }).catch(err => {
    // res.status(500).send('查询失败~')
    res.json({
      code: '1001',
      msg: '读取失败',
      data: null,
      err
    })
    console.log(err)
    return
  })
});

// 新增记录
router.post('/account', checkTokenMiddleware, (req, res) => {
  console.log(req.body)
  // // 写入文件
  // db.get('accounts').unshift({ id, ...req.body }).write()
  // 插入数据库
  AccountModel.create({
    ...req.body,
    time: moment(req.body.time).toDate()
  }).then(data => {
    // 成功提示
    // res.render('success', {msg: '添加成功哦~~~', url: '/account'})
    res.json({
      code: '0000',
      msg: '创建成功',
      data
    })
  }).catch(err => {
    // res.status(500).send('插入失败~')
    res.json({
      code: '1002',
      msg: '插入失败',
      data: null,
      err
    })
    console.log(err)
    return
  })
})

// 删除记录
router.delete('/account/:id', checkTokenMiddleware, (req, res) => {
  // 获取 params 的 id
  const id = req.params.id
  // 删除
  // db.get('accounts').remove({id}).write()
  // 删除数据库
  AccountModel.deleteOne({_id: id}).then(data => {
    // res.render('success', {msg: '删除成功！！！', url: '/account'})
    res.json({
      code: '0000',
      msg: '删除成功',
      data
    })
  }).catch(err => {
    // res.status(500).send('删除失败~')
    res.json({
      code: '1003',
      msg: '删除失败',
      data: null,
      err
    })
    console.log(err)
    return
  })
})

// 获取单个账单信息
router.get('/account/:id', checkTokenMiddleware, (req, res) => {
  // 获取 params 的 id
  const {id} = req.params
  AccountModel.findOne({_id: id}).then(data => {
    res.json({
      code: '0000',
      msg: '查询成功',
      data
    })
  }).catch(err => {
    res.json({
      code: '1004',
      msg: '查询失败',
      data: null,
      err
    })
    console.log(err)
    return
  })
})

// 更新单个账单信息
router.patch('/account/:id', checkTokenMiddleware, (req, res) => {
  // 获取 params 的 id
  const {id} = req.params
  AccountModel.updateOne({_id: id}, req.body).then(data => {
    // 再次查询
    AccountModel.findById(id).then(data => {
      res.json({
        code: '0000',
        msg: '更新成功',
        data
      })
    }).catch(err => {
      res.json({
        code: '1004',
        msg: '查询失败',
        data: null,
        err
      })
    })
  }).catch(err => {
    res.json({
      code: '1005',
      msg: '更新失败',
      data: null,
      err
    })
    console.log(err)
    return
  })
})

module.exports = router;
